package telas;
import objetos.Pessoa;
import objetos.Gota;
import java.io.IOException;
import java.util.Vector;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
/** @author Chicao
 */
public class Jogo extends GameCanvas implements Runnable {
    private boolean continua;
    private Pessoa minino;
    private Gota gotinha;
    private Vector chuva = new Vector();
    private int contador;
    private int dificuldade;
    private int contaFim;
    private Image imgMinino, imgGota, imgFim;
    public Jogo() {
        super(true);
        continua = true;
        contador = 0;
        dificuldade = 10;
        contaFim = 30;
        try {
            imgGota = Image.createImage(Pessoa.class.getResourceAsStream("/gota.png"));
            imgMinino = Image.createImage(Pessoa.class.getResourceAsStream("/menino.png"));
            imgFim = Image.createImage(Pessoa.class.getResourceAsStream("/fim.png"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        minino = new Pessoa(this, imgMinino);
        gotinha = new Gota(this, imgGota);
        chuva.addElement(gotinha);
        Thread t = new Thread(this);
        t.start();
    }
    public void run() {
        Graphics g = getGraphics();
        while (continua || contaFim > 0) {
            atualizarPosicao();
            verificarMovimento();
            redesenharTela(g);
            pausa(60);
        }
    }
    public void atualizarPosicao() {
        for (int i = 0; i < chuva.size(); i++) {
            gotinha = (Gota) chuva.elementAt(i);
            gotinha.movimenta();
        }
        int estadoTeclas = getKeyStates();
        if ((estadoTeclas & LEFT_PRESSED) != 0) {
            minino.aceleraX(-1);
        }
        if ((estadoTeclas & RIGHT_PRESSED) != 0) {
            minino.aceleraX(1);
        }
        minino.movimenta();
        if ((contador % dificuldade) == 0) {
            gotinha = new Gota(this, imgGota);
            chuva.addElement(gotinha);
        }
        contador++;
        if (!continua) {
            contaFim--;
        }
    }
    public void verificarMovimento() {
        for (int i = 0; i < chuva.size(); i++) {
            gotinha = (Gota) chuva.elementAt(i);
            if (minino.colidiu(gotinha) && continua) {
                minino.molhou(imgFim);
                continua = false;
            }
        }
    }
    public void redesenharTela(Graphics g) {
        g.setColor(0);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(255,255,0);
        g.drawString(String.valueOf(contador), 10, 10, Graphics.TOP | Graphics.LEFT );
        for (int i = 0; i < chuva.size(); i++) {
            gotinha = (Gota) chuva.elementAt(i);
            gotinha.paint(g);
        }
        minino.paint(g);
        flushGraphics();
    }
    public void pausa(int miliseg) {
        try {
            Thread.sleep(miliseg);
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
    }
}